package com.assistant.core;

/**
 * @author Anyang
 * @version 1.0.0
 * @date 2025/10/25 05:10:45
 * @description 命令数据结构： 封装了 LLM API 返回的 JSON 数据
 */
public class CommandData {
    // 指令类型，例如 "open_app", "open_url", "create_text"
    private String action;

    // 指令目标
    private String target;

    // 原有文本生成提示字段 (对应 JSON 的 'prompt' 或 'extra')
    private String prompt;

    // Gson 库需要一个无参数构造函数
    public CommandData() {
    }

    // 构造函数：参数名保持与原有字段一致
    public CommandData(String action, String target, String prompt) {
        this.action = action;
        this.target = target;
        this.prompt = prompt;
    }


    // --- Getters ---
    public String getAction() {
        // 返回时处理 null 值，避免空指针
        return action != null ? action.toLowerCase() : "";
    }

    public String getTarget() {
        // 返回时处理 null 值，避免空指针
        return target != null ? target : "";
    }

    public String getPrompt() {
        // 返回时处理 null 值，避免空指针
        return prompt != null ? prompt : "";
    }

    @Override
    public String toString() {
        return "CommandData{" +
                "action='" + action + '\'' +
                ", target='" + target + '\'' +
                ", prompt='" + (prompt.length() > 20 ? prompt.substring(0, 20) + "..." : prompt) + '\'' +
                '}';
    }

    // 注意：LLM API 返回的是 JSON 字符串，Gson 会自动调用对应的 Setter。
    // 如果没有显式定义 Setter，Gson 也可以通过反射给 private 字段赋值。
    // 为了兼容性，这里省略 Setter，让 Gson 直接注入。
}